package feevale.sisop.threads;

import feevale.sisop.util.SituacaoBarbeiroEnum;
import feevale.sisop.util.SituacaoClienteEnum;
import feevale.sisop.view.Barbearia;

public class Cliente extends Agente {
	
	private Integer codigo;
	
	private Barbearia barbearia;
	
	public Cliente(Barbearia barbearia) {
		this.barbearia = barbearia;
	}
	
	@Override
	public void run() {
		
		barbearia.log(this, SituacaoClienteEnum.ENTRANDO.getValue());
		
		if (barbearia.getBarbeiro().getSituacao().equals(SituacaoBarbeiroEnum.DORMINDO)) {
			barbearia.getCadeiras().add(this);
			barbearia.getBarbeiro().acordar(this);
			
		} else if (barbearia.getCadeiras().size() < barbearia.getNrCadeiras()) {
			barbearia.getCadeiras().add(this);
			
			barbearia.log(this, SituacaoClienteEnum.AGUARDANDO.getValue());
		} else {
			barbearia.setDesistencias(barbearia.getDesistencias() + 1);
			barbearia.atualizaInformacoes();
			
			barbearia.log(this, SituacaoClienteEnum.SAINDO.getValue());
		}
		
		barbearia.atualizaInformacoes();
	}
	
	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	@Override
	public String getDescricao() {
		return "Cliente (" + codigo + ")";
	}
	
}
